package Thread.KFC;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: lqh
 * @description:
 * 在一个KFC内，服务员负责生产食物，消费者负责消费食物；
 * 当生产到一定数量可以休息一下，直到消费完食物，再马上生产，一直循环
 * notifyAll：通知该对象所有等待线程执行
 * wait :线程等待
 * @program: Demo
 * @create: 2018-04-13 14:11
 **/
public class Kfc {

    final static int MAX_COUNT=100;

    int count = 0;

    List<String> foods = new ArrayList<>();

    public void produceFood(){
        synchronized (this){
            if(count<MAX_COUNT){
                count++;
                System.out.println("生产了一个汉堡包，当前汉堡包数："+count);
            }else {
                System.out.println("汉堡包够了");
                this.notifyAll();
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public void conSumFood(){
        synchronized (this){
            if(count>0){
                count--;
                System.out.println("消费了一个汉堡包，当前汉堡包数："+count);
            }else {
                System.out.println("汉堡包没有了");
                this.notifyAll();
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args) {
        Kfc kfc = new Kfc();
        Produce produce = new Produce(kfc);
        Cusum cusum = new Cusum(kfc);
        produce.start();
        cusum.start();
    }
}
